本文目錄一覽:
- 1、如何在Linux使用Eclipse + CDT開發C/C++程序
- 2、有哪些用 Python 語言講算法和數據結構的書
- 3、cdt是什麼文件
- 4、CDT規約的詳細內容是什麼?
- 5、cdt 、101 、103、 104四種規約有什麼區別?
- 6、怎樣學好網絡編程
如何在Linux使用Eclipse + CDT開發C/C++程序
A. 為什麼要在Linux使用Eclipse開發C/C++程序?
Linux是一個以C/C++開發為主的平台,無論是Kernel或是Application,主要都使用C/C++開發。傳統在Linux下開發程序,是在文字模式下,利用vi等文字編輯器撰寫C/C++程序存盤後,在Command line下使用gcc編譯,若要debug,則使用gdb。
這種開發方式生產力並不高,若只是開發學習用的小程序則影響不大,但若要開發大型項目時,程序檔案個數眾多,需要用project或solution的方式管理;且debug時breakpoint的加入,單步執行,觀察變量變化等,都需要更可視化的方式才能夠增加生產力;最重要的,由於現在的程序語言皆非常的龐大,又有複雜的函式庫,要程序員熟記所有的程序語法和function名稱,實在很困難,所以語法提示(Intellisense)的功能就非常重要,這些就必須靠IDE來達成。
在Windows平台上,若要開發C/C++程序,我們有Microsoft Visual Studio、Borland C++ Builder可用,這些都是很好用的IDE,但可惜僅能在Windows下使用,但是在Linux平台呢?基於以下理由,我推薦使用Eclipse開發C/C++程序:
1. Eclipse是一個用Java所撰寫IDE,因此可跨平台,所以在Linux和Windows平台下皆可使用Eclipse,可降低程序員熟析IDE的學習曲線。
2. Eclipse雖然主要拿來開發Java程序,但事實上Eclipse為一個『萬用語言』的IDE,只要掛上plugin後,就可以在Eclipse開發各種語言程序,所以我們只要掛上CDT(C/C++ Development Toolkit)後,就可以在Eclipse開發C/C++程序,除此之外,目前的主流程序語言,如C/C++、C#、Java、PHP、Perl、Python、Ruby、Rebol、JavaScript、SQL、XML、UML等,皆可在Eclipse上撰寫,所以只要熟析Eclipse的IDE環境,將來若開發其它語言程序,就不用再重新學習IDE環境了。
3. 最重要的,Eclipse和CDT是Open Source且完全免費,取得相當容易,事實上Fedora 5已經包含Eclipse和CDT了,雖然預設Fedara 5安裝時並沒有含Eclipse,只要手動另外加選即可。
B. 如何在Linux下安裝Eclipse和CDT?
i. 由Linux Distribution安裝Eclipse,Fedora 5就內含Eclipse和CDT。
ii. 手動安裝
1. 下載檔案
A、 下載JRE(Java Runtime Environment) 。()
B、 下載Eclipse SDK。()
C、 下載CDT。()
2. 安裝
A、 安裝JRE
i. [root@localhost ~]#mkdir /usr/local/java
ii. (將檔案jre-1_5_0_09-linux-i586-rpm.bin下載到/usr/local/java目錄下)
iii. (超級用戶模式)
[root@localhost ~]#su
iv. [root@localhost ~]#cd /usr/java
v. (將您所下載的檔的權限更改為可執行)
[root@localhost java]#chmod a+x jre-1_5_0_09-linux-i586-rpm.bin
vi. (啟動安裝過程)
[root@localhost java]#./jre-1_5_0_09-linux-i586-rpm.bin
(此時將顯示二進制許可協議,按控格顯示下一頁,讀完許可協議後,輸入 『yes』繼續安裝。此時會將解壓縮,產生jre-1_5_0_9-linux-i586.rpm)
vii. (安裝jre-1_5_0_9-linux-i586.rpm)
[root@localhost java]#rpm –ivh jre-1_5_0_9-linux-i586.rpm
(此時會將JRE裝在/usr/java/jre1.5.0_09目錄下)
viii. (設定環境變量,讓Linux能找到JRE)
[root@localhost java]#vi /etc/profile
(將以下內容加入在檔案後面)
1PATH=$PATH:/usr/java/jre1.5.0_09/bin
2export JAVA_HOME=/usr/java/jre1.5.0_09
3export CLASSPATH=$JAVA_HOME/lib:.
(存盤後,重新啟動Linux)
ix. (測試Java是否安裝成功)
[root@localhost ~]#java –version
B、 安裝Eclipse SDK
i. (將檔案eclipse-SDK-3.2.1-linux-gtk.tar.gz下載到桌面)
ii. [root@localhost ~]#cd /usr/local
iii. [root@localhost local]#cp ~Desktop/eclipse-SDK-3.2.1-linux-gtk.tar.gz .
iv. (將eclipse-SDK-3.2.1-linux-gtk.tar.gz解壓縮)
[root@localhost local]#tar –zxvf eclipse-SDK-3.2.1-linux-gtk.tar.gz
v. [root@localhost local]#cd eclipse
vi. (執行Eclipse)
[root@localhost eclipse]#./eclipse
vii. (Select a workspace)
(將Use this as the default and do not ask again打勾,以後就不會出現這個窗口)
(第一次執行Eclipse會出現此error,因為沒有任何Eclipse設定檔,所以無法讀取,第二次執行Eclipse就無此錯誤訊息,按OK繼續。)
(Eclipse主畫面)
C、 安裝CDT
i. (將檔案org.eclipse.cdt-3.1.1-linux.x86.tar.gz下載到桌面)
ii. [root@localhost ~]#cp ~/Desktop/org.eclipse.cdt-3.1.1-linux.x86.tar.gz .
iii. (將org.eclipse.cdt-3.1.1-linux.x86.tar.gz解壓縮)
[root@localhost ~]#tar –zxvf org.eclipse.cdt-3.1.1-linux.x86.tar.gz
(檔案將解到~/eclipse目錄下)
iv. (安裝CDT plugin)
[root@localhost ~]cp –r eclipse/plugins/. /usr/local/eclipse/plugins/
v. (啟動Eclipse,多了C和C++ Project支持)
C. 如何在Eclipse上開發C/C++程序?
i. 建立Hello Word project
1. 建立C/C++ project
2. 選擇Managed Make C++ Project(若選擇Managed Make C++ Project,Eclipse會自動為我們建立make file;若選擇Standard Make C++ Project,則必須自己寫make file。)
3. 輸入Project name
4. 選擇Project類型(如執行檔或Library,這裡選擇執行檔即可)
5. 額外的設定
6. Open Associated Perspective?(選Yes繼續)
7. 建立C++ Source File
8. 輸入C++ Source File檔名
9. 輸入C++程序代碼
10. 執行程序(顯示在下方的Console區)
ii. 如何在Eclipse CDT中Debug C/C++程序?
1. 在Eclipse中Debug,就如同在一般IDE中Debug一樣,只要在程序代碼的左方按兩下,就可加入breakpoint。
2. 啟動Debug
3. Debug設定,按Debug開始Debug
4. 單步執行,顯示變量變化
E. 結論
Eclipse為Linux在C/C++開發提供一個完善的IDE環境,事實上,以我用過眾多IDE的經驗,除了Visual Studio最方便外,Eclipse的好用也直追Visual Studio,並且超越Borland C++ Builder及Dev C++,雖然安裝上比較麻煩,但只要依照本文介紹一步一步的設定,就一定可完成Eclipse設定,若想要在Windows平台使用gcc compiler,也建議使用Eclipse + CDT + MinGW的組合。
有哪些用 Python 語言講算法和數據結構的書
1.Python數據結構篇
數據結構篇主要是閱讀[Problem Solving with Python](Welcome to Problem Solving with Algorithms and Data Structures) [該網址鏈接可能會比較慢]時寫下的閱讀記錄,當然,也結合了部分[算法導論](Introduction to Algorithms)中的內容,此外還有不少wikipedia上的內容,所以內容比較多,可能有點雜亂。這部分主要是介紹了如何使用Python實現常用的一些數據結構,例如堆棧、隊列、二叉樹等等,也有Python內置的數據結構性能的分析,同時還包括了搜索和排序(在算法設計篇中會有更加詳細的介紹)的簡單總結。每篇文章都有實現代碼,內容比較多,簡單算法一般是大致介紹下思想及算法流程,複雜的算法會給出各種圖示和代碼實現詳細介紹。
**這一部分是下面算法設計篇的前篇,如果數據結構還不錯的可以直接看算法設計篇,遇到問題可以回來看數據結構篇中的某個具體內容充電一下,我個人認為直接讀算法設計篇比較好,因為大家時間也都比較寶貴,如果你會來讀這些文章說明你肯定有一定基礎了,後面的算法設計篇中更多的是思想,這裡更多的是代碼而已,嘿嘿。**
(1)[搜索](Python Data Structures)
簡述順序查找和二分查找,詳述Hash查找(hash函數的設計以及如何避免衝突)
(2)[排序](Python Data Structures)
簡述各種排序算法的思想以及它的圖示和實現
(3)[數據結構](Python Data Structures)
簡述Python內置數據結構的性能分析和實現常用的數據結構:棧、隊列和二叉堆
(4)[樹總結](Python Data Structures)
簡述二叉樹,詳述二叉搜索樹和AVL樹的思想和實現
2.Python算法設計篇
算法設計篇主要是閱讀[Python Algorithms: Mastering Basic Algorithms in the Python Language](Python Algorithms: Mastering Basic Algorithms in the Python Language)[**點擊鏈接可進入Springer免費下載原書電子版**]之後寫下的讀書總結,原書大部分內容結合了經典書籍[算法導論](Introduction to Algorithms),內容更加細緻深入,主要是介紹了各種常用的算法設計思想,以及如何使用Python高效巧妙地實現這些算法,這裡有別於前面的數據結構篇,部分算法例如排序就不會詳細介紹它的實現細節,而是側重於它內在的算法思想。這部分使用了一些與數據結構有關的第三方模塊,因為這篇的重點是算法的思想以及實現,所以並沒有去重新實現每個數據結構,但是在介紹算法的同時會分析Python內置數據結構以及第三方數據結構模塊的優缺點,也就意味着該篇比前面都要難不少,但是我想我的介紹應該還算簡單明了,因為我用的都是比較樸實的語言,並沒有像算法導論一樣列出一堆性質和定理,主要是對着某個問題一步步思考然後算法就出來了,嘿嘿,除此之外,裏面還有很多關於python開發的內容,精彩真的不容錯過!
這裡每篇文章都有實現代碼,但是代碼我一般都不會分析,更多地是分析算法思想,所以內容都比較多,即便如此也沒有包括原書對應章節的所有內容,因為內容實在太豐富了,所以我只是選擇經典的算法實例來介紹算法核心思想,除此之外,還有不少內容是原書沒有的,部分是來自算法導論,部分是來自我自己的感悟,嘻嘻。該篇對於大神們來說是小菜,請一笑而過,對於菜鳥們來說可能有點難啃,所以最適合的是和我水平差不多的,對各個算法都有所了解但是理解還不算深刻的半桶水的程序猿,嘿嘿。
本篇的順序按照原書[Python Algorithms: Mastering Basic Algorithms in the Python Language](Python Algorithms: Mastering Basic Algorithms in the Python Language)的章節來安排的(章節標題部分相同部分不同喲),為了節省時間以及保持原著的原滋原味,部分內容(一般是比較難以翻譯和理解的內容)直接摘自原著英文內容。
**1.你也許覺得很多內容你都知道嘛,沒有看的必要,其實如果是我的話我也會這麼想,但是如果只是歸納一個算法有哪些步驟,那這個總結也就沒有意義了,我覺得這個總結的亮點在於想辦法說清楚一個算法是怎麼想出來的,有哪些需要注意的,如何進行優化的等等,採用問答式的方式讓讀者和我一起來想出某個問題的解,每篇文章之後都還有一兩道小題練手喲**
**2.你也許還會說算法導論不是既權威又全面么,基本上每個算法都還有詳細的證明呢,讀算法導論豈不更好些,當然,你如果想讀算法導論的話我不攔着你,讀完了感覺自己整個人都不好了別怪小弟沒有提醒你喲,嘻嘻嘻,左一個性質右一個定理實在不適合算法科普的啦,沒有多少人能夠堅持讀完的。但是碼農與蛇的故事內容不多喲,呵呵呵**
**3.如果你細讀本系列的話我保證你會有不少收穫的,需要看算法導論哪個部分的地方我會給出提示的,嘿嘿。溫馨提示,前面三節內容都是介紹基礎知識,所以精彩內容從第4節開始喲,么么噠 O(∩_∩)O~**
(1)[Python Algorithms – C1 Introduction](Python Algorithms)
本節主要是對原書中的內容做些簡單介紹,說明算法的重要性以及各章節的內容概要。
(2)[Python Algorithms – C2 The basics](Python Algorithms)
**本節主要介紹了三個內容:算法漸近運行時間的表示方法、六條算法性能評估的經驗以及Python中樹和圖的實現方式。**
(3)[Python Algorithms – C3 Counting 101](Python Algorithms)
原書主要介紹了一些基礎數學,例如排列組合以及遞歸循環等,但是本節只重點介紹計算算法的運行時間的三種方法
(4)[Python Algorithms – C4 Induction and Recursion and Reduction](Python Algorithms)
**本節主要介紹算法設計的三個核心知識:Induction(推導)、Recursion(遞歸)和Reduction(規約),這是原書的重點和難點部分**
(5)[Python Algorithms – C5 Traversal](Python Algorithms)
**本節主要介紹圖的遍歷算法BFS和DFS,以及對拓撲排序的另一種解法和尋找圖的(強)連通分量的算法**
(6)[Python Algorithms – C6 Divide and Combine and Conquer](Python Algorithms)
**本節主要介紹分治法策略,提到了樹形問題的平衡性以及基於分治策略的排序算法**
(7)[Python Algorithms – C7 Greedy](Python Algorithms)
**本節主要通過幾個例子來介紹貪心策略,主要包括背包問題、哈夫曼編碼和最小生成樹等等**
(8)[Python Algorithms – C8 Dynamic Programming](Python Algorithms)
**本節主要結合一些經典的動規問題介紹動態規劃的備忘錄法和迭代法這兩種實現方式,並對這兩種方式進行對比**
(9)[Python Algorithms – C9 Graphs](Python Algorithms)
cdt是什麼文件
CDT百度百科
一、 循環遠動規約Cycle Distance Transmission,
是早期電力部頒佈的一套遠動規約標準。包括遙測、遙信、電量、遙信變位、SOE等電力遠動信息。數據量有一定的容量限制。早期多用於RTU設備和後台主站之間的通信。後來由於自動化信息增加,逐漸被其擴展規約(擴展cdt)等新規約所替代。
CDT規約的詳細內容是什麼?
CDT一般指循環遠動規約。
本標準規定了電網數據的採集與監控系統中循環式遠動規約的功能、幀結構、信息字結構和傳輸規則等。
內容為:依據國家標準:《地區電網數據採集與監控系統通用技術條件》和《遠動終端通用技術條件》,該技術要求本規約採用可變幀長度、多種幀類別循環傳送、變位遙信優先傳送,重要遙測量更新循環時間較短,區分循環量、隨機量和插入量採用不同形式傳送信息,以滿足電網調度安全監控系統對遠動信息的實時性和可靠性的要求。
cdt 、101 、103、 104四種規約有什麼區別?
一般來說CDT,101,104屬於調度類的規約,屬於調度端與站內的通訊規約,CDT,101用於串口,104用於網絡.
主要區別在於:CDT規約屬於主動上送,不管調度發什麼命令都會主動上送全站遙信遙測,每隔一段時間就會循環上送全站信號,遙信最大個數512,遙測256,信息類型是通過控制字來區分的,功能碼來區分點號,101和104類似,除了報文頭有區別,上送信息內容大體一致。101與104是問答式,就是調度問什麼回什麼。大致流程為:主站測試鏈路報文-子站回確認幀,調度總召,子站上送全遙測遙信,調度下發二級數據召喚報文,子站回變化遙測。101與104通過類型標識區分信號類型,信息體地址判斷信息點號。
三者遙信變位和SOE都是主動上送。
103主要用於站控層設備通訊,同樣是問答式,通過ASDU號區分信息類型,FUN號,INF號區分點位。
另外CDT也能用於站內智能設備通訊。
怎樣學好網絡編程
我認為一個自學網絡編程的人,不管選擇什麼語言,最重要的是堅持.
在堅持之前,要考慮清楚,自己真的適合嗎?你對網絡真的有激情嗎?你喜歡不斷更新的技術嗎?你能夠適應不停的學習新東西,拋棄舊東西嗎?
當然,舊東西並非沒用,網絡編程的精髓也並非表面化的程序設計語言的知識.但是,你應該有上述心理準備.
準備好了?
在客戶端,javascript的兼容性更好,大部分瀏覽器都支持。不可不學。
既然學了javascript,還需要學vbscript嗎?似乎沒有必要。但是,至少你要能看懂vbscript程序,因為很多服務器端的腳本例程都是用vbscript寫的。如果你有精力,當然也可以再學習vbscript啦。不過我個人覺得沒有必要。
還有,就是.net技術,對初學者比較難學,但是如果要用微軟的東西,不可不學。
web編程很有意思,可能寫這一行代碼的時候要考慮它會在客戶端運行,而下一行代碼卻又要在服務器運行。一個文件中,可能同時用到很多不同語言的語法,就像你常常去不同地方,今天將中文,明天講英語,後天講上海話,再過一天講廣東話。混淆了可不行。
說這麼多廢話,希望你不要介意。並且希望對你有幫助!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/291916.html