導航:首頁 > 程序命令 > 程序員需要作圖嗎

程序員需要作圖嗎

發布時間:2023-03-26 11:31:04

1. 為什麼計算機專業要學工程制圖

如果你畢業後到工程公司去工作,那麼,學了工程制圖就可以做計算機專業的工程設計,也便於與其他專業進行溝通和交流,如果你畢業後去一家軟體公司做軟體開發,那就用不到學工程制圖,待將來需要時再自學也可以。如果你有時間和精力,多學一點,可以為自己贏得更多的工作選擇機會。
不知我的解答對你是否有幫助?(我也是計算機專業,並學過工程制圖)

2. 程序員與UI設計師之間是什麼關系

他們兩個是什麼關系,這個要具體情況具體分析。
1、如果是上班,UI設計師做的設計,需要程序員來實現這些效果,那麼他們是同事關系。
2、如果兩人關系很好,無話不談,那麼是朋友關系。
3、如果UI設計師和程序員分別是一男一女,並且經常聊天和約會,可能是情侶關系。
4、如果在第3點的基礎上還拿了結婚證,那麼是夫妻關系。

3. 程序員如何畫圖

經常寫完文章, 收到的第一個問題是: 你的圖是用啥畫的; 其實自己也經常問別人. 最近強化了一下這方面的知識, 總結一下.

個人將畫圖的場景分為兩種: PPT/文章中使用和系統中使用

可能有人覺得 系統中畫圖 需求不多, 個人感覺還是有必要的. 經常遇到費勁開發了一個系統, 遇到各路用戶問問題. 如果有辦法在系統中將執行流程直接生成流程圖, 你好我好大家好.

GUI 畫圖工具有很多可選, 個人比較推薦的是 OmniGraffle , 在線工具推薦 lucidchart . 當然, 我也見過用 KeyNote 畫出漂亮的系統圖的, 工具不重要, 關鍵看人(說多了都是淚)

重點說一下程序畫圖. 最近反省了一下, 畫圖最多的就是那幾個:

沒了. 真的沒了. 會這幾個就可以行走江湖了.
然後, 推薦兩個 library: blockdiag 和 graphviz .

blockdiag 是一個神奇的 python libary. 可以通過使用類似 graphviz 的語法, 畫出 塊圖, 序列圖, 網路圖, 活動圖. 還提供了一個 互動式的 shell , 用於調試上述幾種圖. 例如, shell 中輸入:

立即的到如下圖:

點擊右上角切換成序列圖, 輸入如下內容:

有可以輕松得到如下序列圖:

但是說好的 library 呢? 以 seqdiag 為例,

Graphviz 可謂是一代畫圖神器, 通過官網的示例圖就知道有多強大. blockdiag 也是參考 Graphviz 的實現. 通過類似的語法描述, 生成所需的圖形. 對於顏色的選擇, 可以參考文檔中 Colors 一節, 非常全面.

程序方面, 同名的 graphviz library 可以使用 pip install graphviz 安裝, 非常方便. 示例python 程序如下:

既然有了 library 可以畫圖, 強烈建議在自己的系統中將一些復雜的流程化的事情通過根據當前系統狀態畫出圖的方式展現給用戶, 可以避免很多疑惑.

4. 計算機就業崗位有哪些

計算機就業崗位包括程序員、平面設計、大數據測試、設計總監、網站維護等等。


5. 干貨!程序員需要掌握的幾種圖

隨著互聯網寒冬的的到來,程序員就業環境越來越嚴峻,這就要求我們必須要不斷提高自己,來應對高壓的工作環境。下面介紹的這幾種圖是我在工作中經常使用的,所謂的圖,都是為了輔助思考的,輔助開發的,比文字描述的更清晰,更有邏輯。
前些年,網上有一個口號喊得很響: 「人人都是產品經理」 。這就要求我們需要學習認圖、畫圖的技巧,能從需求文檔里快速的抽象出我們想要的東西。最近,網上曝出的程序員和產品經理之間的矛盾,大都是需求不清晰產生的,作為程序員的我們如果掌握的產品經理所必須的技能,那我們以後就可以吊打產品經理了,哈哈哈哈。。。

流程圖 是對過程、演算法、流程的一種圖像表示,在技術設計、交流及商業簡報等領域有廣泛的應用。

計算機語言只是一種工具。光學習語言的規則還不夠,最重要的是學會針對各種類型的問題,擬定出有效的解決方法和步驟即演算法。有了正確而有效的演算法,可以利用任何一種計算機高級語言編寫程序,使計算機進行工作。因此,設計演算法是程序設計的核心。

對同一個問題,可以有不同的解題方法和步驟。

例如,求1+2+3+…+100,可以先進行1+2,再加3,再加4,一直加到100,也可採取100+(1+99)+(2+98)+…+(49+51)+50=100+50+49×100=5050。

還可以有其它的方法。當然,方法有優劣之分。有的方法只需進行很少的步驟,而有些方法則需要較多的步驟。一般說,希望採用方法簡單,運算步驟少的方法。因此,為了有效地進行解題,不僅需要保證演算法正確,還要考慮演算法的質量,選擇合適的演算法。

一個計算問題的解決過程通常包含下面幾步:

傳統流程圖

用圖表示的演算法就是流程圖。流程圖是用一些圖框來表示各種類型的操作,在框內寫出各個步驟,然後用帶箭頭的線把它們連接起來,以表示執行的先後順序。用圖形表示演算法,直觀形象,易於理解。

美國國家標准化協會ANSI曾規定了一些常用的流程圖符號,為世界各國程序工作者普遍採用。最常用的流程圖符號見圖。

流程圖不僅可以指導編寫程序,而且可以在調試程序中用來檢查程序的正確性。如果框圖是正確的而結果不對,則按照框圖逐步檢查程序是很容易發現其錯誤的。流程圖還能作為程序說明書的一部分提供給別人,以便幫助別人理解你編寫程序的思路和結構。

PS:牆裂推薦大家使用ProcessOn,畫流程圖的神器!!!


心智圖 (Mind Map),又稱 腦圖 心智地圖 腦力激盪圖 思維導圖 靈感觸發圖 概念地圖 樹狀圖 樹枝圖 思維地圖 ,是一種圖像式思維的工具以及一種利用圖像式思考輔助工具來表達思維的工具。

心智圖是由英國的托尼·博贊(托尼·布詹)於1970年代提出的一種輔助思考工具。心智圖通過在平面上的一個主題出發畫出相關聯的對象,像一個心臟及其周邊的血管圖,故稱為「心智圖」。由於這種表現方式比單純的文本更加接近人思考時的空間性想像,所以越來越為大家用於創造性思維過程中。

ps:我一般都是用的網路腦圖,在線的比較方便


拓撲學(TOPOLOGY)是一種研究與大小、距離無關的幾何圖形特性的方法。 網路拓撲是由網路節點設備和通信介質構成的網路結構圖。

拓撲學是數學中一個重要的、基礎的分支。起初它是幾何學的一支,研究幾何圖形在連續變形下保持不變的性質(所謂連續變形,形象地說就是允許伸縮和扭曲等變形,但不許割斷和粘合) 拓撲圖用於計算機網路示意,也就是不考慮計算機實際的位置,只表示網路中每台計算機以及網路設備之間的相互關系。

節點,節點就是網路單元。網路單元是網路系統中的各種數據處理設備、數據通信控制設備和數據終端設備。

鏈路,鏈路是兩個節點間的連線。鏈路分「物理鏈路」和「邏輯鏈路」兩種,前者是指實際存在的通信連線,後者是指在邏輯上起作用的網路通路。鏈路容量是指每個鏈路在單位時間內可接納的最大信息量。

通路,通路是從發出信息的節點到接收信息的節點之間的一串節點和鏈路。

星型結構的優點是結構簡單、建網容易、控制相對簡單。其缺點是屬集中控制,主節點負載過重,可靠性低,通信線路利用率低。

匯流排結構的優點是信道利用率較高,結構簡單,價格相對便宜。缺點是同一時刻只能有兩個網路節點相互通信,網路延伸距離有限,網路容納節點數有限。在匯流排上只要有一個點出現連接問題,會影響整個網路的正常運行。目前在區域網中多採用此種結構。

環型結構的優點是一次通信信息在網中傳輸的最大傳輸延遲是固定的;每個網上節點只與其他兩個節點有物理鏈路直接互連,因此,傳輸控制機制較為簡單,實時性強。缺點是一個節點出現故障可能會終止全網運行,因此可靠性較差。

樹型結構實際上是星型結構的一種變形,它將原來用單獨鏈路直接連接的節點通過多級處理主機進行分級連接。

這種結構與星型結構相比降低了通信線路的成本,但增加了網路復雜性。網路中除最低層節點及其連線外,任一節點或連線的故障均影響其所在支路網路的正常工作。


UML是一種開放的方法,用於說明、可視化、構建和編寫一個正在開發的、面向對象的、軟體密集系統的製品的開放方法。UML展現了一系列最佳工程實踐,這些最佳實踐在對大規模,復雜系統進行建模方面,特別是在軟體架構層次已經被驗證有效。

功能模型, 從用戶的角度展示系統的功能,包括用例圖。

對象模型, 採用對象,屬性,操作,關聯等概念展示系統的結構和基礎,包括類別圖。

動態模型, 展現系統的內部行為。包括序列圖,活動圖,狀態圖。


實體關系圖,簡記E-R圖是指以實體、關系、屬性三個基本概念概括數據的基本結構,從而描述靜態數據結構的概念模式。

6. UI設計,僅是畫張圖嗎

不是UI設計現在不同於以前,我們會對圖形有邏輯,圖形也是素材組成的,素材的命名規則和規范依賴於程序開發。
簡單舉例,一個android UI製作過程是結合框架的,我們作為的框架主要是WEB框架,這些UI除了包括圖標、背景、gif動圖,最重要的祥碧戚是CSS把他們布局好。這樣程序員就可以直接拿到手上就使用。android原生態開發,UI必須配合XML配置文件慧鉛,你設計的UI放在as中需要能拆分元素使用的。
windows編程wpf與winform也有這種區別,wpf就會有xml配置文件,很多時候報表也需要設計UI,你會發現報表也是謹陵個xml格式的。
web設計會原生很多自己的東西,企業自己設計的海報和logo,更多的還要調整框架適應能力,像easy ui這樣的工具算最基礎不過的腳本。

7. 程序員需要學習ps嗎

專業的程序員是不用學ps的,因為在軟體公司里都是各自負責一個模塊的,除非是小公司人手不夠,所以建議把編程學好,學好框架,出去後能有很不錯的收入。而ps如果當作是一種技術為自己服務還是很不錯的。

8. 我在廠里做了半年操機員,想去栢圖模具深圳教學點學CNC數控編程,做編程要不要學畫圖的呢

要想做好數控編程,畫圖是基礎!有些2D圖可以直接編程,有些需要3D圖才可以編程,不要聽有人說有些廠喊派不需要畫圖,那種情況一般是大廠,為了提高效率才把畫圖和編程分開。

你判汪想多了,掘滲仔數控編程和畫圖是一體的,你去學編程,自然會教你畫圖。

9. 哪些行業需要用到編程

很多行業都需要工業控制需要程序員游戲行業需要程序員企業管理需要程序員稅務需要程序員...

10. 要成為一名專業的程序員,從零開始需要怎麼一步步來比較好,要把最底層的先學精通嗎(個人認為)求學長

前言
你是否覺得自己從學校畢業的時候只做過小玩具一樣的程序?走入職場後哪怕沒有什麼經驗也可以把以下這些課外練習走一遍(朋友的抱怨:學校課程總是從理論出發,作業項目都看不出有什麼實際作用,不如從工作中的需求出發)
建議:
不要亂買書,不要亂追新技術新名詞,基礎的東西經過很長時間積累而且還會在未來至少10年通用。
回顧一下歷史,看看歷史上時間線上技術的發展,你才能明白明天會是什麼樣。
一定要動手,例子不管多麼簡單,建議至少自己手敲一遍看看是否理解了里頭的細枝末節。
一定要學會思考,思考為什麼要這樣,而不是那樣。還要舉一反三地思考。
註:你也許會很奇怪為什麼下面的東西很偏Unix/linux,這是因為我覺得Windows下的編程可能會在未來很沒有前途,原因如下:
現在的用戶界面幾乎被兩個東西主宰了,1)Web,2)移動設備iOS或Android。Windows的圖形界面不吃香了。
越來越多的企業在用成本低性能高的Linux和各種開源技術來構架其系統,Windows的成本太高了。
微軟的東西變得太快了,很不持久,他們完全是在玩弄程序員。詳情參見《Windows編程革命史》
所以,我個人認為以後的趨勢是前端是Web+移動,後端是Linux+開源。開發這邊基本上沒Windows什麼事。
啟蒙入門
1、 學習一門腳本語言,例如Python/Ruby
可以讓你擺脫對底層語言的恐懼感,腳本語言可以讓你很快開發出能用得上的小程序。實踐項目:
處理文本文件,或者csv (關鍵詞 python csv, python open, python sys) 讀一個本地文件,逐行處理(例如 word count,或者處理log)
遍歷本地文件系統 (sys, os, path),例如寫一個程序統計一個目錄下所有文件大小並按各種條件排序並保存結果
跟資料庫打交道 (python sqlite),寫一個小腳本統計資料庫里條目數量
學會用各種print之類簡單粗暴的方式進行調試
學會用Google (phrase, domain, use reader to follow tech blogs)
為什麼要學腳本語言,因為他們實在是太方便了,很多時候我們需要寫點小工具或是腳本來幫我們解決問題,你就會發現正規的編程語言太難用了。
2、 用熟一種程序員的編輯器(不是IDE) 和一些基本工具
Vim / Emacs / Notepad++,學會如何配置代碼補全,外觀,外部命令等。
Source Insight (或 ctag)
使用這些東西不是為了Cool,而是這些編輯器在查看、修改代碼/配置文章/日誌會更快更有效率。
3、 熟悉Unix/Linux Shell和常見的命令行
如果你用windows,至少學會用虛擬機里的linux, vmware player是免費的,裝個Ubuntu吧
一定要少用少用圖形界面。
學會使用man來查看幫助
文件系統結構和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
學會使用一些文本操作命令 sed/awk/grep/tail/less/more …
學會使用一些管理命令 ps/top/lsof/netstat/kill/tcpmp/iptables/dd…
了解/etc目錄下的各種配置文章,學會查看/var/log下的系統日誌,以及/proc下的系統運行信息
了解正則表達式,使用正則表達式來查找文件。
對於程序員來說Unix/Linux比Windows簡單多了。(參看我四年前CSDN的博文《其實Unix很簡單》)學會使用Unix/Linux你會發現圖形界面在某些時候實在是太難用了,相當地相當地降低工作效率。
4、 學習Web基礎(HTML/CSS/JS) + 伺服器端技術 (LAMP)
未來必然是Web的世界,學習WEB基礎的最佳網站是W3School。
學習HTML基本語法
學習CSS如何選中HTML元素並應用一些基本樣式(關鍵詞:box model)
學會用 Firefox + Firebug 或 chrome 查看你覺得很炫的網頁結構,並動態修改。
學習使用javascript操縱HTML元件。理解DOM和動態網頁(Dynamic HTML: The Definitive Reference, 3rd Edition - O'Reilly Media) 網上有免費的章節,足夠用了。或參看 DOM 。
學會用 Firefox + Firebug 或 chrome 調試Javascript代碼(設置斷點,查看變數,性能,控制台等)
在一台機器上配置Apache 或 Nginx
學習php,讓後台PHP和前台HTML進行數據交互,對伺服器相應瀏覽器請求形成初步認識。實現一個表單提交和反顯的功能。
把PHP連接本地或者遠程資料庫 MySQL(MySQL 和 SQL現學現用夠了)
跟完一個名校的網路編程課程(例如:http://www.stanford.e/~ouster/cgi-bin/cs142-fall10/index.php ) 不要覺得需要多於一學期時間,大學生是全職一學期選3-5門課,你業余時間一定可以跟上
學習一個javascript庫(例如jQuery 或 ExtJS)+ Ajax (非同步讀入一個伺服器端圖片或者資料庫內容)+JSON數據格式。
HTTP: The Definitive Guide 讀完前4章你就明白你每天上網用瀏覽器的時候發生的事情了(proxy, gateway, browsers)
做個小網站(例如:一個小的留言板,支持用戶登錄,Cookie/Session,增、刪、改、查,上傳圖片附件,分頁顯示)
買個域名,租個空間,做個自己的網站。
進階加深
1、 C語言和操作系統調用
重新學C語言,理解指針和內存模型,用C語言實現一下各種經典的演算法和數據結構。推薦《計算機程序設計藝術》、《演算法導論》和《編程珠璣》。
學習(麻省理工免費課程)計算機科學和編程導論
學習(麻省理工免費課程)C語言內存管理
學習Unix/Linux系統調用(Unix高級環境編程),,了解系統層面的東西。
用這些系統知識操作一下文件系統,用戶(實現一個可以拷貝目錄樹的小程序)
用fork/wait/waitpid寫一個多進程的程序,用pthread寫一個多線程帶同步或互斥的程序。多進程多進程購票的程序。
用signal/kill/raise/alarm/pause/sigprocmask實現一個多進程間的信號量通信的程序。
學會使用gcc和gdb來編程和調試程序(參看我的《用gdb調試程序》)
學會使用makefile來編譯程序。(參看我的《跟我一起寫makefile》)
IPC和Socket的東西可以放到高級中來實踐。
學習Windows SDK編程(Windows 程序設計 ,MFC程序設計)
寫一個窗口,了解WinMain/WinProcere,以及Windows的消息機制。
寫一些程序來操作Windows SDK中的資源文件或是各種圖形控制項,以及作圖的編程。
學習如何使用MSDN查看相關的SDK函數,各種WM_消息以及一些常式。
這本書中有很多常式,在實踐中請不要照抄,試著自己寫一個自己的常式。
不用太多於精通這些東西,因為GUI正在被Web取代,主要是了解一下Windows 圖形界面的編程。@virushuo 說:「 我覺得GUI確實不那麼熱門了,但充分理解GUI工作原理是很重要的。包括移動設備開發,如果沒有基礎知識仍然很吃力。或者說移動設備開發必須理解GUI工作,或者在win那邊學,或者在mac/iOS上學」。
2、學習Java
Java 的學習主要是看經典的Core Java 《Java 核心技術編程》和《Java編程思想》(有兩卷,我僅鏈了第一卷,足夠了,因為Java的圖形界面了解就可以了)
學習JDK,學會查閱Java API Doc Java Platform SE 6
了解一下Java這種虛擬機語言和C和Python語言在編譯和執行上的差別。從C、Java、Python思考一下「跨平台」這種技術。
學會使用IDE Eclipse,使用Eclipse 編譯,調試和開發Java程序。
建一個Tomcat的網站,嘗試一下JSP/Servlet/JDBC/MySQL的Web開發。把前面所說的那個PHP的小項目試著用JSP和Servlet實現一下。
3、Web的安全與架構

學習HTML5,網上有很多很多教程,以前酷殼也介紹過很多,我在這里就不羅列了。
學習Web開發的安全問題(參考新浪微博被攻擊的這個事,以及Ruby的這篇文章)
學習HTTP Server的rewrite機制,Nginx的反向代理機制,fast-cgi(如:PHP-FPM)
學習Web的靜態頁面緩存技術。
學習Web的非同步工作流處理,數據Cache,數據分區,負載均衡,水平擴展的構架。
實踐任務:
使用HTML5的canvas 製作一些Web動畫。
嘗試在前面開發過的那個Web應用中進行SQL注入,JS注入,以及XSS攻擊。
把前面開發過的那個Web應用改成構造在Nginx + PHP-FPM + 靜態頁面緩存的網站
4、學習關系型資料庫
你可以安裝MSSQLServer或MySQL來學習資料庫。
學習教科書里資料庫設計的那幾個範式,1NF,2NF,3NF,……
學習資料庫的存過,觸發器,視圖,建索引,游標等。
學習SQL語句,明白表連接的各種概念(參看《SQL Join的圖示》)
學習如何優化資料庫查詢(參看《MySQL的優化》)
實踐任務:設計一個論壇的資料庫,至少滿足3NF,使用SQL語句查詢本周,本月的最新文章,評論最多的文章,最活躍用戶。
5、一些開發工具
學會使用SVN或Git來管理程序版本。
學會使用JUnit來對Java進行單元測試。
學習C語言和Java語言的coding standard 或 coding guideline。(我N年前寫過一篇關C語言非常簡單的文章——《編程修養》,這樣的東西你可以上網查一下,一大堆)。
推薦閱讀《代碼大全》《重構》《代碼整潔之道》
高級深入
1、C++ / Java 和面向對象
我個人以為學好C++,Java也就是舉手之勞。但是C++的學習曲線相當的陡。不過,我覺得C++是最需要學好的語言了。參看兩篇趣文「C++學習信心圖」 和「21天學好C++」
學習(麻省理工免費課程)C++面向對象編程
讀我的 「如何學好C++」中所推薦的那些書至少兩遍以上(如果你對C++的理解能夠深入到像我所寫的《C++虛函數表解析》或是《C++對象內存存局(上)(下)》,或是《C/C++返回內部靜態成員的陷阱》那就非常不錯了)
然後反思為什麼C++要干成這樣,Java則不是?你一定要學會對比C++和Java的不同。比如,Java中的初始化,垃圾回收,介面,異常,虛函數,等等。
實踐任務:
用C++實現一個BigInt,支持128位的整形的加減乘除的操作。
用C++封裝一個數據結構的容量,比如hash table。
用C++封裝並實現一個智能指針(一定要使用模板)。
《設計模式》必需一讀,兩遍以上,思考一下,這23個模式的應用場景。主要是兩點:1)鍾愛組合而不是繼承,2)鍾愛介面而不是實現。(也推薦《深入淺出設計模式》)
實踐任務:
使用工廠模式實現一個內存池。
使用策略模式製做一個類其可以把文本文件進行左對齊,右對齊和中對齊。
使用命令模式實現一個命令行計算器,並支持undo和redo。
使用修飾模式實現一個酒店的房間價格訂價策略——旺季,服務,VIP、旅行團、等影響價格的因素。
學習STL的用法和其設計概念 - 容器,演算法,迭代器,函數子。如果可能,請讀一下其源碼
實踐任務:嘗試使用面向對象、STL,設計模式、和WindowsSDK圖形編程的各種技能
做一個貪吃蛇或是俄羅斯方塊的游戲。支持不同的級別和難度。
做一個文件瀏覽器,可以瀏覽目錄下的文件,並可以對不同的文件有不同的操作,文本文件可以打開編輯,執行文件則執行之,mp3或avi文件可以播放,圖片文件可以展示圖片。
學習C++的一些類庫的設計,如: MFC(看看候捷老師的《深入淺出MFC》) ,Boost, ACE, CPPUnit,STL (STL可能會太難了,但是如果你能了解其中的設計模式和設計那就太好了,如果你能深入到我寫的《STL string類的寫時拷貝技術》那就非常不錯了,ACE需要很強在的系統知識,參見後面的「加強對系統的了解」)
Java是真正的面向對象的語言,Java的設計模式多得不能再多,也是用來學習面向對象的設計模式的最佳語言了(參看Java中的設計模式)。
推薦閱讀《Effective Java》 and 《Java解惑》
學習Java的框架,Java的框架也是多,如Spring, Hibernate,Struts 等等,主要是學習Java的設計,如IoC等。
Java的技術也是爛多,重點學習J2EE架構以及JMS, RMI, 等消息傳遞和遠程調用的技術。
學習使用Java做Web Service (官方教程在這里)
實踐任務: 嘗試在Spring或Hibernate框架下構建一個有網路的Web Service的遠程調用程序,並可以在兩個Service中通過JMS傳遞消息。
C++和Java都不是能在短時間內能學好的,C++玩是的深,Java玩的是廣,我建議兩者選一個。我個人的學習經歷是:
深究C++(我深究C/C++了十來年了)
學習Java的各種設計模式。
2、加強系統了解
重要閱讀下面的幾本書:
《Unix編程藝術》了解Unix系統領域中的設計和開發哲學、思想文化體系、原則與經驗。你一定會有一種醍醐灌頂的感覺。
《Unix網路編程卷1,套接字》這是一本看完你就明白網路編程的書。重要注意TCP、UDP,以及多路復用的系統調用select/poll/epoll的差別。
《TCP/IP詳解 卷1:協議》- 這是一本看完後你就可以當網路黑客的書。了解乙太網的的運作原理,了解TCP/IP的協議,運作原理以及如何TCP的調優。
實踐任務:
理解什麼是阻塞(同步IO),非阻塞(非同步IO),多路復用(select, poll, epoll)的IO技術。
寫一個網路聊天程序,有聊天伺服器和多個聊天客戶端(服務端用UDP對部分或所有的的聊天客戶端進Multicast或Broadcast)。
寫一個簡易的HTTP伺服器。
《Unix網路編程卷2,進程間通信》信號量,管道,共享內存,消息等各種IPC…… 這些技術好像有點老掉牙了,不過還是值得了解。
實踐任務:
主要實踐各種IPC進程序通信的方法。
嘗試寫一個管道程序,父子進程通過管道交換數據。
嘗試寫一個共享內存的程序,兩個進程通過共享內存交換一個C的結構體數組。
學習《Windows核心編程》一書。把CreateProcess,Windows線程、線程調度、線程同步(Event, 信號量,互斥量)、非同步I/O,內存管理,DLL,這幾大塊搞精通。
實踐任務:使用CreateProcess啟動一個記事本或IE,並監控該程序的運行。把前面寫過的那個簡易的HTTP服務用線程池實現一下。寫一個DLL的鉤子程序監控指定窗口的關閉事件,或是記錄某個窗口的按鍵。
有了多線程、多進程通信,TCP/IP,套接字,C++和設計模式的基本,你可以研究一下ACE了。使用ACE重寫上述的聊天程序和HTTP伺服器(帶線程池)
實踐任務:通過以上的所有知識,嘗試
寫一個服務端給客戶端傳大文件,要求把100M的帶寬用到80%以上。(注意,磁碟I/O和網路I/O可能會很有問題,想一想怎麼解決,另外,請注意網路傳輸最大單元MTU)
了解BT下載的工作原理,用多進程的方式模擬BT下載的原理。
3、系統架構
負載均衡。HASH式的,純動態式的。(可以到Google學術里搜一些關於負載均衡的文章讀讀)
多層分布式系統 – 客戶端服務結點層、計算結點層、數據cache層,數據層。J2EE是經典的多層結構。
CDN系統 – 就近訪問,內容邊緣化。
P2P式系統,研究一下BT和電驢的演算法。比如:DHT演算法。
伺服器備份,雙機備份系統(Live-Standby和Live-Live系統),兩台機器如何通過心跳監測對方?集群主結點備份。
虛擬化技術,使用這個技術,可以把操作系統當應用程序一下切換或重新配置和部署。
學習Thrift,二進制的高性能的通訊中間件,支持數據(對象)序列化和多種類型的RPC服務。
學習Hadoop。Hadoop框架中最核心的設計就是:MapRece和HDFS。MapRece的思想是由Google的一篇論文所提及而被廣為流傳的,簡單的一句話解釋MapRece就是「任務的分解與結果的匯總」。HDFS是Hadoop分布式文件系統(Hadoop Distributed File System)的縮寫,為分布式計算存儲提供了底層支持。
了解NoSQL資料庫(有人說可能是一個過渡炒作的技術),不過因為超大規模以及高並發的純動態型網站日漸成為主流,而SNS類網站在數據存取過程中有著實時性等剛性需求,這使得目前NoSQL資料庫慢慢成了人們所關注的焦點,並大有成為取代關系型資料庫而成為未來主流數據存儲模式的趨勢。當前NoSQL資料庫很多,大部分都是開源的,其中比較知名的有:MemcacheDB、Redis、Tokyo Cabinet(升級版為Kyoto Cabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等。

閱讀全文

與程序員需要作圖嗎相關的資料

熱點內容
漢語詞典pdf下載 瀏覽:349
android公網ip 瀏覽:611
要塞1地圖放哪個文件夾 瀏覽:848
凡科建站怎麼弄伺服器 瀏覽:939
蘋果手機怎麼設置app播放 瀏覽:202
下載網站源碼用什麼瀏覽器 瀏覽:241
六線譜pdf 瀏覽:156
linuxmysqlsock 瀏覽:239
人教版數學pdf下載 瀏覽:460
文檔安全加密系統 瀏覽:491
數控銑床編程簡單數字 瀏覽:788
編程電纜如何重啟 瀏覽:121
myqq命令行發消息 瀏覽:365
日產逍客怎麼使用app升窗 瀏覽:503
安卓系統怎麼快速刪除微信內容 瀏覽:653
csharppython 瀏覽:409
程序員脖子按摩儀 瀏覽:563
小米桌面文件夾亂碼怎麼回事 瀏覽:858
點歌台app怎麼連接 瀏覽:318
大學電腦編程學什麼好 瀏覽:348