c語言


樓主沒說啥專業,默認就CS吧。我是CS轉EE專業的,對這兩個方向都有一些認識,樓主想學什麼方向歡迎在評論區回復我。

先看《編碼》,了解最基礎的計算機通信和很基本的CPU工作原理,還能稍微了解一下數字電路的基礎知識。

然後再看CSAPP,中文版也沒問題,現在的翻譯已經很不錯了,看這本書對整個計算機架構有個宏觀了解,至少知道編碼,進位,CPU,內存,操作系統,網路的大致工作原理,構建宏觀概念。

然後網上隨便搜索c語言,socket方面的關鍵詞,可以先寫個非常簡單的tcp或者udp協議的echo小程序(echo回聲小程序,功能是你在控制台輸入什麼內容給伺服器,伺服器那邊也輸出什麼內容給你,這個程序就和復讀機一樣,沒有什麼實際作用,但他的地位相當於是網路編程裡面的hello world,是所有網路編程開發的第一步)注意,這一步最好在linux下完成。而且c語言裡面的socket方面的庫為了兼顧很早以前的協議兼容性,可能會有很多奇奇怪怪的寫法,比如addr的轉換等等,這些都是歷史原因,你現在這個階段只要知道照著教程裡面這麼做就對了,等你學到下一個計算機網路部分你就知道原因了。

如果要深入網路開發,看謝希仁《計算機網路》,對OSI(標準OSI是七層,書上是五層協議,作者也說了是為了學習理解方便,這個沒什麼問題,你照著學就對了,如果你自己能弄明白為什麼是分四層或者七層,你也就已經對這方面知識了解很深入了)

如果還要進一步深入網路開發,甚至是想做工控領域的網路開發,或者做路由器,交換機等各種網路硬體設備層面的開發,可以修數字電路這門課,掌握HDL和FPGA開發。然後使用FPGA和一些常見的網卡晶元一起使用HDL完成一個最簡答的UDP通信,這個階段需要對FPGA的開發平台,以及對應廠商的網卡驅動方式,datasheet,時序協議要有了解。

如果要深入研究TCP以及更高層面的應用層開發,需要上SOCP(在FPGA上構建一個軟核,你可以理解為使用HDL語言在FPGA上寫了一個CPU出來,然後在這個CPU上跑微型操作系統實現的),因為傳統的HDL適合的開發場景是並發的,小規模時序的,而應用層,TCP協議涉及到更大規模的時序,更複雜的應用層協議,使用HDL開發的複雜度會相當高(就像用c語言的cgi寫一個知乎和用python寫一個知乎,明白人都知道肯定python寫起來更方便)。

更高層次,想做更加資深的網路開發可能還需要了解一些RFC規範,一些類似於乙太網802.3之類的文檔。我自己也沒完整讀完過,不好再做什麼指導。

如果想做一般的web開發,那就html5+css3+js。然後看看是想走前端還是後端,後端如果是純web表現層方面,現在大公司用java多(ssm三大框架),小公司用php多(國內用thinkphp和laravel多),看樓主能力自行決定。前端的話直接web大前端(現在流行webpack+vue全家桶)然後再學es6,然後再學webpack掌握基於前端構建系統的開發,然後vue全家桶接著學,學完之後就掌握一些基本的前端ui框架的使用。上面這一套流程下來學完,找工作肯定不成問題了。


把你看的書扔了重新找本書學吧


這個時候你已經掌握了最基礎的語言了,一門通,門門通,其他語言上手很快,可以先放一放,做點項目練練手,純邏輯的就行,鞏固和加深對已有知識的理解。可以做三四個項目。比如程序員都會幻想過電梯的調度系統,城市地鐵的調度系統,俄羅斯方塊,貪吃蛇等。

這之後,你就可以看看更高級點的東西了。

&

&

&

&

看完以後,你就可以發現以前的項目里有許許多多設計不合理的地方,那麼就把以前的項目重新優化一下。

然後你就可以選著一下自己喜歡的語言了,python c++ java java-script ruby swift,試著找一些很語言相關的項目

這個時候你就可以了解一整個項目的工作流,差不多你就是一個入門的程序員啦。

在工作中你會發現有大量的東西要去學習。

工作一段時間後,你就可以看看程序員高階書籍啦,比如

&

&

&

&

&

&

&

&

&

以上


unix環境編程

Unix網路編程


找C primer plus任意版本,完全忘記之前學的內容,從頭重新學一遍c語言。


學一些實際操作的晶元,比如51單片機,STM32之類的。


黑客攻擊手段可分為非破壞性攻擊和破壞性攻擊兩類。

非破壞性攻擊一般是為了擾亂系統的運行,並不盜竊系統資料,通常採用拒絕服務攻擊或信息炸彈;

破壞性攻擊是以侵入他人電腦系統、盜竊系統保密信息、破壞目標系統的數據為目的。下面為大家介紹4種黑客常用的攻擊手段

1、後門程序

由於程序員設計一些功能複雜的程序時,一般採用模塊化的程序設計思想,將整個項目分割為多個功能模塊,分別進行設計、調試,這時的後門就是一個模塊的秘密入口。在程序開發階段,後門便於測試、更改和增強模塊功能。正常情況下,完成設計之後需要去掉各個模塊的後門,不過有時由於疏忽或者其他原因(如將其留在程序中,便於日後訪問、測試或維護)後門沒有去掉,一些別有用心的人會利用窮舉搜索法發現並利用這些後門,然後進入系統並發動攻擊。

2、信息炸彈

信息炸彈是指使用一些特殊工具軟體,短時間內向目標伺服器發送大量超出系統負荷的信息,造成目標伺服器超負荷、網路堵塞、系統崩潰的攻擊手段。比如向未打補丁的 Windows 95系統發送特定組合的 UDP 數據包,會導致目標系統死機或重啟;向某型號的路由器發送特定數據包致使路由器死機;向某人的電子郵件發送大量的垃圾郵件將此郵箱「636f7079e799bee5baa631333363376364撐爆」等。目前常見的信息炸彈有郵件炸彈、邏輯炸彈等。

3、拒絕服務

拒絕服務又叫分散式D.O.S攻擊,它是使用超出被攻擊目標處理能力的大量數據包消耗系統可用系統、帶寬資源,最後致使網路服務癱瘓的一種攻擊手段。作為攻擊者,首先需要通過常規的黑客手段侵入並控制某個網站,然後在伺服器上安裝並啟動一個可由攻擊者發出的特殊指令來控制進程,攻擊者把攻擊對象的IP地址作為指令下達給進程的時候,這些進程就開始對目標主機發起攻擊。這種方式可以集中大量的網路伺服器帶寬,對某個特定目標實施攻擊,因而威力巨大,頃刻之間就可以使被攻擊目標帶寬資源耗盡,導致伺服器癱瘓。比如1999年美國明尼蘇達大學遭到的黑客攻擊就屬於這種方式。

4、網路監聽

網路監聽是一種監視網路狀態、數據流以及網路上傳輸信息的管理工具,它可以將網路介面設置在監聽模式,並且可以截獲網上傳輸的信息,也就是說,當黑客登錄網路主機並取得超級用戶許可權後,若要登錄其他主機,使用網路監聽可以有效地截獲網上的數據,這是黑客使用最多的方法,但是,網路監聽只能應用於物理上連接於同一網段的主機,通常被用做獲取用戶口令。

5、DDOS

黑客進入計算條件,一個磁碟操作系統(拒絕服務)或DDoS攻擊(分散式拒絕服務)攻擊包括努力中斷某一網路資源的服務,使其暫時無法使用。

這些攻擊通常是為了停止一個互聯網連接的主機,然而一些嘗試可能的目標一定機以及服務。

這些攻擊的主要目標企業或網站的大流量。

DDOS沒有固定的地方,這些攻擊隨時都有可能發生;他們的目標行業全世界。分散式拒絕服務攻擊大多出現在伺服器被大量來自攻擊者或殭屍網路通信的要求。

伺服器無法控制超文本傳輸協議要求任何進一步的,最終關閉,使其服務的合法用戶的一致好評。這些攻擊通常不會引起任何的網站或伺服器損壞,但請暫時關閉。

這種方法的應用已經擴大了很多,現在用於更惡意的目的;喜歡掩蓋欺詐和威懾安防面板等。

6、密碼破解當然也是黑客常用的攻擊手段之一。

想學黑客技術的話,可以來找我,10年技術積累

也可以找我來拿一些學習資料

參考下圖找我交流

var HelloWorldLayer = cc.Layer.extend({

sprite:null,

ctor:function () {

//////////////////////////////

// 1. super init first

this._super();

/////////////////////////////

// 2. add a menu item with "X" image, which is clicked to quit the program

// you may modify it.

// ask the window size

var size = cc.winSize;

/////////////////////////////

// 3. add your codes below...

// add a label shows "Hello World"

// create and initialize a label

var helloLabel = new cc.LabelTTF("Hello World", "Arial", 38);

// position the label on the center of the screen

helloLabel.x = size.width / 2;

helloLabel.y = size.height / 2 + 200;

// add the label as a child to this layer

this.addChild(helloLabel, 5);

// add "HelloWorld" splash screen"

this.sprite = new cc.Sprite(res.HelloWorld_png);

this.sprite.attr({

x: size.width / 2,

y: size.height / 2

});

this.addChild(this.sprite, 0);

return true;

}

});

var HelloWorldScene = cc.Scene.extend({

onEnter:function () {

this._super();

var layer = new HelloWorldLayer();

this.addChild(layer);

}

});


計算機網路,數據結構,演算法導論


想從事網路,得先學會穿過G*W嗷


學 C primer plus 。難得的好書。


推薦閱讀:
相关文章