我自己是從今年2月多開始來到培訓機構(華清)學習的,以前的我自己也嘗試過自己自學,但是中途自己還是被我自己打敗了,所以我覺得如果自己自制力不是很好的話,還是建議自己尋找一些線下的課程,因為有老師帶你,還有一學習的同學,我覺得學習的氛圍還是很重要的,也認識了不少朋友。
我現在學習過的知識雖然不是太多,但也掌握了許多自己沒有接觸過的的知識(C語言、Linux基礎、高級C、數據結構、IO編程和進程與線程),雖然現在我所掌握的知識離成為一名合格的嵌入式軟件開發工程師還具有一定的距離,但是我覺得只要我們沉下心來,慢慢學習,后面一定可以成為一名合格的嵌入式安全開發工程師。
我在當前學習中自認為比較重要的知識點:
C語言:
條件判斷(if、switch)、循環(for、while、do while、goto)、形參和實參的區分(以前的我自己分不清,你們要是覺得容易可以忽略)、掌握關鍵字(我以前對于enum、union等關鍵字不是太清晰)、宏(只是做替換,我們不要自己給它加括號)等。
Linux基礎:
虛擬機的安裝、vi的使用,shell命令的使用,Linux虛擬機的網絡配置和三個服務的安裝與使用(Samba、ftfp、nfs)等
高級C:
數組、指針(非常重要,需要熟練掌握,因為后面的大量知識都是與指針相關的)、函數、結構體(struct、union、enum)、條件編譯(增強兼容性)
數據結構:
鏈表(循序表、單項鏈表、單項循環鏈表、雙向鏈表、雙向循環鏈表、內核鏈表),這其中我覺得讓我感到不太適應的就是內核鏈表,因為內核鏈表是由linux開發人員編寫好的函數,我們只要調用就好了,但是函數比較多,函數的形參的意義也要自己明確,這對于英語不好的自己有點難受,所以自己要多花時間去看和去寫。
I0編程:
文件的7中格式(常規文件-、目錄文件d、塊設備b、字符設備c、管道p、套接字s、符號鏈接l)、格式化標準IO(fopen、printf、fprintf、sprintf、snprintf、scanf、fscanf、sscanf、fclose等)和非格式化標準IO(getc、fgetc、getchar、fgets、gets、fputc、putc、putchar、fputs、puts等)、緩沖區(行緩沖、塊緩沖、不緩沖)、時間IO(time、ctime、localtime、asctime等)、文件IO(open、read、write、close等)。
進程與線程
認識進程(進程:程序的動態執行過程,程序:為了達到某一目的而編寫的一系列的指令集合)、進程的狀態、進程的生老病死(fork、exec函數簇、kill -9、exit、_exit、return、wait、waitpid等)、守護進程的創建(7步)、進程間的通信(無名管道、有名管道、信號、共享內存、信號量、消息隊列、套接字)、線程的創建和使用(pthread_create、pthread_join、pthread_exit等)。
以上是我自己的一些不全面的總結,其實很多的地方都還有很多細節的知識,那些細節的知識也是我們需要掌握的,所以我們只有在后面的學習和以后的工作中慢慢重復和慢慢使用才可以掌握的更加牢固,我們才可以更上一層樓。隨著知識量的增加,很容易忘記一些知識是很正常的,我們需要多回頭看看,多敲代碼,到時候自然就掌握了。